package com.cangshi.service;

import com.cangshi.entity.Task;
import com.cangshi.entity.TaskType;
import com.cangshi.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by 15c on 2017/4/3.
 */
public interface TaskService {
    /**
     * 用户创建任务；并会将用户发布任务是的某些详细信息一起存入数据库；比如task_issue_time，task_issue_ip，task_issue_address
     */
    int addTask(Task task);

    /**
     * 查询上次访问TaskId
     *
     * @return id
     */

    int getLastTaskId();

    /**
     * 通过user_id查询用户发布的历史任务
     */
    List<Task> selectUserCreateHistoryTaskBYUserId(Integer startPos, Integer pageSize, Integer userId);

    /**
     * 通过user_id查询一个用户所有的历史任务条数
     */
    int selectOneUserAllHistoryTask(Integer userId);

    /**
     * 通过一个任务id查询一个任务的详情
     *
     * @param taskId 任务id
     * @return
     */
    Task selectTaskDetails(Integer taskId);

    /**
     * 通过一个任务id删除任务
     *
     * @param taskId 任务id
     * @return
     */

    int deleteTask(Integer taskId);

    /**
     * 查询所有任务类型
     *
     * @return
     */
    List<TaskType> selectAllType();

    /**
     * 修改任务状态
     */
    int updateTaskState(Integer taskId,Integer userId,Integer taskState);


    /**
     * 查询筛选出的任务总条数(用户没有登录)
     */

    int selectAllNumber(Double minMoney,
                        Double maxMoney,
                        Integer taskType,
                        Integer distance,
                        String keyword,
                        Double latitude,
                        Double longitude);
    /**
     * 筛选任务(用户没有登录)
     */
    List<Task> selectTaskByScreen(Double minMoney,
                                  Double maxMoney,
                                  Integer taskType,
                                  Integer distance,
                                  String keyword,
                                  Integer startPos,
                                  Integer pageSize,
                                  Double latitude,
                                  Double longitude

                                 );

    /**
     * 查询用于主页显示的任务总条数
     */
    int selectHomePageTaskNum();

    /**
     *查询任务用于主页显示(分页显示)
     */
    List<Task> selectHomePageTask(Integer startPos,
                                  Integer pageSize);

    /**
     * 通过筛选查询任务任务总条数（此为用户登录状态下的筛选）
     */
    int selectTaskNumByLandUser(Double minMoney,
                                Double maxMoney,
                                Integer taskType,
                                Integer distance,
                                String keyword,
                                Double latitude,
                                Double longitude,
                                Integer sex,
                                Integer userAge);

    /**
     * 通过筛选查询任务（此为用户登录状态下的筛选）
     * @param minMoney
     * @param maxMoney
     * @param taskType
     * @param distance
     * @param keyword
     * @param startPos
     * @param pageSize
     * @param latitude
     * @param longitude
     * @param sex
     * @param userAge
     * @return
     */
    List<Task> selectTaskByLandUser(Double minMoney,
                                    Double maxMoney,
                                    Integer taskType,
                                    Integer distance,
                                    String keyword,
                                    Integer startPos,
                                    Integer pageSize,
                                    Double latitude,
                                    Double longitude,
                                    Integer sex,
                                    Integer userAge);
    /**
     * 强制任务过期
     */

    int setTaskOverdue();
}

